﻿using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Identity;

namespace Acme.BookStore2
{
    public interface IOrganizationUnitAppService : IApplicationService
    {
        Task<OrganizationUnitDto> GetAsync(Guid id);
        Task<ListResultDto<OrganizationUnitDto>> GetListAllAsync();
        Task<PagedResultDto<OrganizationUnitDto>> GetListAsync(PagedAndSortedResultRequestDto input);
        Task<OrganizationUnitDto> CreateAsync(OrganizationUnitCreateDto input);
        Task<OrganizationUnitDto> UpdateAsync(Guid id, OrganizationUnitUpdateDto input);
        Task DeleteAsync(Guid id);
        Task PutMoveAsync(Guid id, OrganizationUnitMoveInput input);
        Task<PagedResultDto<IdentityUserDto>> GetMembersAsync(Guid id, GetIdentityUsersInput input);
        Task UpdateMembersAsync(Guid id, OrganizationUnitUserInput input);
        Task DeleteMembersAsync(Guid id, Guid memberId);
        Task<PagedResultDto<IdentityRoleDto>> GetRolesAsync(Guid id, PagedAndSortedResultRequestDto input);
        Task UpdateRolesAsync(Guid id, OrganizationUnitRoleInput input);
        Task DeleteRolesAsync(Guid id, Guid roleId);
    }
}